home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / Varargs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-16  |  812 b   |  39 lines

  1. /* Copyright (C) 1992-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
  2. #if __SC__ || __RCC__
  3. #pragma once
  4. #endif
  5.  
  6. #ifndef __VARARGS_H
  7. #define __VARARGS_H 1
  8.  
  9. #if __INTSIZE == 4
  10. #define __VA_ALIGN    3
  11. #else
  12. #define __VA_ALIGN    1
  13. #endif
  14.  
  15. #define __va_size(type) ((sizeof(type) + __VA_ALIGN) & ~__VA_ALIGN)
  16. #define _INTSIZEOF(n)    ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
  17.  
  18. #if 1
  19. #define __SS
  20. #define _FARARG_
  21. #else
  22. #define __SS    __ss
  23. #define _FARARG_ __far
  24. #endif
  25.  
  26. #ifndef _VA_LIST_DEFINED
  27. #define _VA_LIST_DEFINED 1
  28. typedef char __SS *va_list;
  29. #endif
  30.  
  31. #define va_dcl        int va_alist;
  32. #define va_start(ap)    ((ap) = (va_list)&(va_alist))
  33. #define va_arg(ap,type)    (*(type __SS *)(((char __SS *)(ap)+=__va_size(type))-(__va_size(type))))
  34. #define va_end(ap)    ((void)0)
  35.  
  36. #endif
  37.  
  38.  
  39.